perm filename RLISP.F70[206,LSP] blob
sn#381624 filedate 1978-09-20 generic text, type T, neo UTF8
COMPUTER SCIENCE DEPARTMENT
STANFORD UNIVERSITY
CS 206 COMPUTING WITH SYMBOLIC EXPRESSIONS FALL 1970
INSTRUCTIONS FOR PREPARING AND RUNNING RLISP PROGRAMS
In the first part of this course the exercises to be run on
the machine are to be written in the RLISP language. This is an
input language for LISP close to the notation used in class. We will
use it because the notation is more convenient than the internal LISP
language described in the LISP 1.6 Manual which we shall be using
later.
The RLISP primer describes how to use RLISP for someone
already familiar with LISP and with the Stanford time-sharing system
for the PDP-10. The familiarity with LISP is to be obtained from the
lectures and the course notes, and this memo is intended to tell you
enough about the time-sharing system to use RLISP.
The first thing it is necessary to understand about
time-sharing systems is that at different times you will be talking
to different programs, and the rules for interpreting what you type
depends on what program you are talking to. In order to do the
exercises you will have to talk to three different programs at
different times, namely: the time sharing system, the SOS text editor
which is used to prepare RLISP programs, and RLISP itself. Later you
may find yourself talking to RLISP programs you have written
yourself.
1. The time sharing system.
The time sharing system is quite complex, but we shall need
to know only a few of its commands and other properties.
1.1. To ensure you are talking to the time-sharing system
type <control C>. This is accomplished by typing %C% while holding
down the key marked "CTRL". (This key is like a shift key in that
pressing it does not transmit information to the computer. It only
modifies the information transmitted by pressing other keys if it is
held down). We shall abbreviate this ↑C because this is what the
computer types back when you type <control C>.
No matter what program you are talking to initially, after
↑C, you will be talking to the time sharing system. Always begin your
session by turning on the teletype and typing ↑C.
1.2. Each command to the system is terminated by <carriage
return>, abbreviated <cr>. Until <cr> is typed, the line can be
cancelled by typing <control U>, abbreviated ↑U, and individual
characters can be erased by typing <rubout>. Several characters can
be erased by several <rubout>s.
1.3. Another important special character is <ALT MODE>. Like
<cr>, this character causes the information typed up to that time to
be transmitted to the program you are talking to, and therefore, that
information cannot be taken back by ↑U or <rubout>. When <ALT MODE>
is typed, $ is printed, but the effect of <ALT MODE> cannot be
achieved by typing $. The uses of <ALT MODE> will be described in
the sections on SOS and RLISP, both of which use it for certain
control functions.
1.4. The first step in using the system is to "log in". Type
↑C to be sure you are talking to the system. The system will respond
with <cr> and a . to tell you it is ready to be commanded. Then type
L<cr>, and the system will respond with # to tell you that it wants
your <Project,programmer number> combination. Type 206,<The initials
assigned you><cr>, and the computer will type back ↑C<cr> and another
. to show it is ready for your next command. If it types ARE YOU
SURE?, this means you have typed a wrong <Project,programmer number>,
and you can continue by typing the correct one.
1.5. When you are done using the system you must "log out".
The command for this is K<cr>, and the system will respond with KJOB.
Turn the teletype off to increase its life, which otherwise may be
less than a quarter. Be sure and logout, since the system will keep
track of the time you use.
1.6. There are two system commands for calling the SOS
editor. The first is CREATE <file name><cr> which is used when you
want to create a new RLISP program. The system will turn control
over to SOS which will type back 100, meaning to say that it is in
text mode and it is ready for you to type in your program. The second
SOS calling system command is ED <file name><cr>. This is used when
the file name in question already exists, and you want to modify the
file. SOS will type back * to tell you it is ready for a command.
NOTE: the commands to SOS, to be described later, must be
distinguished from the system commands. The system types . when it
wants a command and SOS types *. RLISP also types *.
1.7. A very important system command is DEL <file name><cr>.
This command deletes the named file. If you have more than 4K of
files, some of them are subject to random deletion unless you have
special permission to have more. This limit does not apply while you
are actually on the machine.
1.8. The system command DIR<cr> will tell you what files you
have.
1.9 The system command HELP <name of concept><cr> will type a
short message about how the concept is used. It is doubtful whether
these messages will be of much use to you.
2.0. The system command SEND JMC<cr> can be used to send a
message to the instructor, and SEND GG<cr> can be used to send a
message to the teaching assistant. The SEND command will tell you
what to do next.
2. The SOS editor.
Editor programs are used in time-sharing systems instead of
obsolete devices like key punches for preparing programs and data.
They are much more convenient than key punches once you get used to
them.
SOS has very many features described in the SOS manual, but
only a few of them should be learned at first. SOS manuals will be
kept in the rooms with the consoles, and later you will have a chance
to buy them if you want.
Here are the basic features of SOS sufficient for the present
purposes.
2.1. SOS has three modes of operation - text mode, command
mode, and a-mode. The effects of characters typed are different in
the three cases. a-mode is associated with the a-command and can be
skipped for the time being although it is quite useful.
2.2. Text mode. When you are in text mode, characters typed
go into the file being created or edited. When you enter text mode,
the system will type a line number, and you can type your text.
Every time you type <cr> the system will give you a new line number,
and you can continue typing. The <control U> and <rubout> features
work as described above for taking back partially typed lines and
individual characters. If you get ahead of the machine's response to
<cr>, no harm will be done.
To go from text mode to control mode type <ALT MODE>. You
will lose any partially typed line so be sure and finish the last
used line with <cr>.
2.3. Control mode. In this mode there are numerous commands.
Each of them consists of a single character followed by certain
parameters followed by <cr>.
2.4. The most important kind of parameter is the range.
300:1400 designates the range from line number 300 to line number
1400. If the range is a single line we can just use the line number,
e.g. 300 if the range is the single line 300. In forming the range, .
denotes the current line, e.g. the last line referred to, and *
denotes the last line of the file.
2.5. Here are the most important commands.
2.6. e<cr>. This command terminates editing, returns control
to the system, and makes the edited file the current file associated
with the <file name> of the CREATE or ED command that initiated the
edit. <control C> will cause a return to the system, but the edit
will not take effect, i.e. the file will be as it was before the
current ED command or non-existent if the edit was initiated with a
CREATE command.
2.7. i<line number>(,<increment>)<cr>. Here, the parentheses
around ,<increment> indicate that an increment is optional. This
command causes SOS to enter text mode right after the indicated line
number and to enter successive lines at the given increment. This
increment is initially 100, but is reset if the increment parameter
of an i command is used. The i command is the main way of entering
text mode. i*<cr> will enter text mode at the end of the file. If
you enter the file in the middle for the purpose of inserting lines,
SOS will interpolate line numbers in an ingenious way.
2.8. p<range><cr> will print the text in that range on your
console. p/1<cr> will print your whole file assuming you haven't
read the SOS manual and learned the facts about pages that I am
trying to spare you.
2.9. d<range><cr> will delete the lines in the indicated
range.
2.10. s<old string><ALT MODE><new string><ALT
MODE><range><cr> will subsitute <new string> for each occurrence of
<old string> in the given range, and will print the lines it has
changed. You can't do this using a key punch.
2.11. w<cr> will save the state of the edit up to now on the
file name edited. This is valuable if the system is in an unreliable
state or if you fear making a catastrophic blunder in editing after
investing considerable effort. The distinction between prudence and
neuroticism is not always easy to make.
2.12. n<cr> will renumber your file with increments of 100,
thus smoothing out any insertions you have made. You must then be
prepared to type out the file using the p command. Here the
distinction to be made is between esthetics and neurosis.
2.13. a<line number><cr> will put you into a-mode editing the
named line. This convenient command has a confusing host of
subcommands, some of which are as follows:
<space> moves one space through the line. The character spaced over
will be printed. 7<space> will space over 7 characters.
<rubout> will move backwards along the line not erasing.
c<character> will change the next character to <character>.
d will delete a character. 7d will delete 7 characters.
i will enter a sub-mode in which successive characters typed will be
inserted. The i sub-mode is terminated by typing <ALT MODE>.
<rubout> works in the i sub mode.
<cr> will end the a-mode, type the rest of the characters in the
line, and return to control mode.
s<character> will skip over characters to the next occurrence of
<character>. This is a very useful command.
k<character> will kill characters up to the next occurrence of
<character>.
2.14. SOS has many more features, but don't bother with them
until you have had some experience with these.
3. RLISP
In general, the RLISP primer is an adequate description of
the workings of RLISP, but I want to emphasize that RLISP can
be used in two ways.
The simplest way to use RLISP is to type
R RLISP<cr>
to the system, and when RLISP types *, type
(BEGIN)<cr>
and then give commands to RLISP. These commands are of two kinds:
defining functions and using them. Thus, if if we type
ALT X ← IF NULL X OR NULL CDR X THEN X ELSE CAR X . ALT CDDR X;<cr>
we will have defined the function %alt% of the lecture notes, which
there is written
alt x ← if nx ∨ n d x then x else a x . alt dd x.
If we now type
ALT '(A B C D E F);<cr>
then RLISP will type back
(A C E)
*.
The * indicates RLISP is ready for another command. You can define
and redefine and use functions to your heart's content, and when you
are done, type <control C> to get back to the system and log out.
What could be simpler?
This way of using RLISP has two disadvantages. First, when
you are done, all you have is your teletype paper. Your functions are
not on a file for future reference. Secondly, the only way you can
change a function once it is typed in (except that ↑U and <rubout>
work while entering lines) is to retype it completely.
The other way of using RLISP is to prepare a file of
functions using SOS, then enter RLISP, and then get your functions in
by using the RLISP command IN <file name>;. You then apply the
functions to examples, and when you find a mistake, type <control C>
and then ED<cr>, and then re-edit the file with your functions and
start over with a new copy of RLISP. This way you always have a copy
of your functions and can get back to them the next day.
A more convenient way of going back and forth between RLISP
and SOS will shortly be provided.
The example on page 22 of the RLISP primer is quite
informative about the first method of operation, but needs the
following amendments.
Before the beginning put in
<control C>
L
206,BA1
Change the statement R REDUCE to R RLISP if this has not already been
done in your primer.
After this, type
<control C>
K
and when the system types KJOB, turn off the teletype.